// 减少作用域链查找层级  

var name = 'name'
function foo () {
    name = 'foo name' // 这里的name是属于全局的
    function baz(){
        var age = 18 
        console.log(name)
        console.log(age)
    }
    baz()
}
foo()


// 每当函数的执行的时候都会产生一个执行上下文
// 当函数执行结束后，执行上下文就会被销毁掉，取决于是否有闭包存在
// 当多次调用同一个函数时，就会多次创建一个执行上下文
// 而且执行上下文都有自己的作用域的，这些作用域直接可以通过作用域链进行连接
// 所以在函数执行过程中，每遇到一个变量，就会先去搜索自己的作用域，
// 如果在当前的作用域没有找到的话，就会沿着作用域链向上查找

var name = 'name'
function foo () {
    var name = 'foo name' 
    function baz(){
        var age = 18 
        console.log(name)
        console.log(age)
    }
    baz()
}
foo()